-- 这个是增加了对redis的访问的 item.lua
-- 导入common库【因为他就在lualib目录下，所以直接写文件名】
local common = require('common')
-- 拿到这个方法
local read_http = common.read_http
local read_redis = common.read_redis

-- 引入cjson模块，用来序列化和反序列化json
local cjson = require('cjson')

-- 获取路径的参数，因为拦截的是 【/api/item/1】 ，我们需要的是 1 这个参数
local id = ngx.var[1]

-- 定义一个函数，用来整合访问后端接口和redis的逻辑
local function read_data(key,path,params)
    local resp = read_redis('127.0.0.1',6379, key)
    if not resp then
        resp = read_http(path, params)
    end
    return resp
end

-- 请求后台接口，获取商品信息【.. 是字符串连接符，第二个参数为空，不需要传递】
--local itemJson = read_http('/item/' .. id, nil)
--local stockJson = read_http('/item/stock/' .. id, nil)
local itemJson = read_data("item:" .. id ,'/item/' .. id, nil)
local stockJson = read_data("item:stock:" .. id, '/item/stock/' .. id, nil)

-- 将json转换为table
local item = cjson.decode(itemJson)
local stock = cjson.decode(stockJson)

-- 组合数据
item.stock = stock.stock
item.sold = stock.sold

-- 继续序列化，并且返回数据
ngx.say(cjson.encode(item))